package com.yckj.day07;

/**
 * TODO
 *
 * @author shengyuee
 * @version 1.0
 * 2025/7/24 10:23
 */
public class StaticDemo1 {
    // 1. static可以修饰属性（静态属性、静态变量、类变量）
    static int num = 25;
    static  String name;
    String sex = "女";
    static{// static可以修饰游离语句块，成为静态代码块
        System.out.println("静态代码块");
        name = "lisi"; // 可以在静态代码中对静态属性进行初始化
    }
    public /*static*/ StaticDemo1(){//static不能修饰构造方法

    }

    public static void print(){ // 2. static可以修饰一般方法，成为静态方法或类方法
        System.out.println("爱爱爱爱");
//        System.out.println(this.name); // 静态方法中不能用this
//        System.out.println(sex); // static修饰的方法不能引用非static 修饰的变量
        // show(); // 静态方法不能调用非静态方法
    }

    public void show(){
        System.out.println(name); // 非static修饰的方法可以引用static 修饰的变量
        print(); // 非静态方法能够调用静态方法
    }



    public static void main(String[] args) {
        /*static*/ int num = 10; // static不能修饰局部变量
        System.out.println(num); // 访问的是和类变量同名的局部变量
        StaticDemo1.num++; // 静态属性被所有对象共享
        System.out.println(StaticDemo1.num); // 访问的静态属性，通过类名.静态属性
        // static不能修饰方法里的普通代码块
        /*static{

        }*/
        StaticDemo1 sd = new StaticDemo1();
        System.out.println(sd.num);
        StaticDemo1 sd2 = new StaticDemo1();
        System.out.println(sd2.num);
        // 通过类名.静态方法
        StaticDemo1.print();
        // static修饰的方法中不能使用this或super
//        System.out.println(this.num);
//        this.print();
    }
 // 4. static可以修饰内部类
 static  class  Demo{

    }
}

